/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package main;

import java.util.ArrayList;
import java.util.Collections;
import java.util.LinkedList;
import java.util.List;
import java.util.Random;
import java.util.Scanner;

/**
 *
 * @author Danilo
 */
public class Main
{
    public static void main(String[] args)
    {
        Deck deck = new Deck();
        Jogador jog = new Jogador(deck);
        Jogador boot = new Jogador(deck);
        Mesa mesa = new Mesa();
        Carta cartaBaixadaJog, cartaBaixadaBoot, cartaTopoMesa;
        cartaBaixadaJog = new Carta();
        Scanner scan = new Scanner(System.in);
        List<Carta> cartasCompativeis;
        Carta comprada;
        int valorCartaBaixada;
        String corCartaBaixada, tipoCartaBaixada;
        String textoCartasCompativeis;
//        int iteracoes = 0;
        
        while(true)
        {
            cartaTopoMesa = deck.compraCartaTopo();
            mesa.adicionaCarta(cartaTopoMesa);
            
            while(cartaTopoMesa.isBLOCK() || cartaTopoMesa.isNEUTRAL() || cartaTopoMesa.isTWO())
            {
                mesa.adicionaCarta(cartaTopoMesa);
                cartaTopoMesa = deck.compraCartaTopo();
            }
            
            System.out.println("Mesa: " + mesa.toString());
            
            System.out.println("Sua mao: " + jog.exibeMao());
//            

            textoCartasCompativeis = jog.exibeCartasCompativeis(cartaTopoMesa);
            System.out.println("textoCartasCompativeis: " + textoCartasCompativeis);
            
            if(textoCartasCompativeis.equals(""))
            {
                System.out.println("Voce nao tem cartas compativeis... Compre uma carta!");
                jog.compraCarta(deck, 1);
            }
            
            textoCartasCompativeis = jog.exibeCartasCompativeis(cartaTopoMesa);
            
            if(textoCartasCompativeis.equals(""))
            {
                System.out.println("Jogada passada!");
            }
            else
            {
                boolean loop = false;
                
                do
                {
                    System.out.print("Cartas Compativeis: " + textoCartasCompativeis);
                    System.out.println();
                    System.out.println("Baixe uma carta.");
                    System.out.println("Valor: ");
                    valorCartaBaixada = scan.nextInt();
                    System.out.println("Cor: ");
                    corCartaBaixada = scan.next();
                    
                    cartaBaixadaJog = jog.capturaCarta(valorCartaBaixada, corCartaBaixada);
                    
                    if(cartaBaixadaJog != null)
                    {
                        loop = false;
                    }
                    else
                    {
                        System.out.println("Carta Invalida!");
                    }
                    
                } while(loop);
                
                mesa.montante.add(cartaBaixadaJog);
                
                // turno do CPU
                
                
                
                
                
                
                
            }
        }
    }

    private static void compraCartas(List<String> mao, List<String> deck, int numeroCartas)
    {
        for(int i = 0; i < numeroCartas; i++)
        {
            // pega sempre a carta do top do deck que será passada para a mao. Depois, remova a carta da lista deck
            mao.add(deck.get(0));
            deck.remove(0);
        }
    }

    

//    private static void tratamentoCartasIncompativeis(Carta cartaTopoMesa, Jogador jog, Deck deck, boolean humano)
//    {
//        Carta comprada;
//        
//        do
//        {
//            comprada = deck.compraCartaTopo();
//            
//            if(comprada.isCompatible(cartaTopoMesa))
//            {
//                
//            }
//        }
//    }

    
}


///*
// * To change this template, choose Tools | Templates
// * and open the template in the editor.
// */
//package main;
//
//import java.util.List;
//import java.util.Scanner;
//
///**
// *
// * @author Danilo
// */
//public class Main {
//    public static void main(String[] args) {
//        // total de cartas no deck é: 40 de 0..9 de qualquer cor + 4 de +2 para cada cor
//        // + 4 de BLOCK para cada cor + 4 de NEUTRAL + 4 de FOUR = 56
//        
//        Deck deck = new Deck();
//        Jogador jog = new Jogador(deck);
//        Jogador boot = new Jogador(deck);
//        Mesa mesa = new Mesa();
//        Carta cartaBaixadaJog, cartaBaixadaBoot, cartaTopoMesa;
//        cartaBaixadaJog = new Carta();
//        Scanner scan = new Scanner(System.in);
//        List<Carta> cartasCompativeis;
//        Carta comprada;
//        
//        int valorCartaBaixada;
//        String corCartaBaixada, tipoCartaBaixada;
//        
//        String textoCartasCompativeis;
//                        
//        while(true) {
//            cartaTopoMesa = deck.montante.get(0);
//            
//            if(cartaTopoMesa.getValor() == 10 || cartaTopoMesa.getValor() == 11 || cartaTopoMesa.getValor() == 12) {
//                while (cartaTopoMesa.getValor() == 10 || cartaTopoMesa.getValor() == 11 || cartaTopoMesa.getValor() == 12) {
//                    cartaTopoMesa = deck.montante.get(0);
//                }
//            }
//                        
//            if(cartaTopoMesa == null) {
//                System.out.println("Mesa: VAZIO");
//            }
//            else {
//                System.out.println("Mesa: " + cartaTopoMesa.toString());
//            }
//            
//            System.out.println("Sua mao: " + jog.exibeMao());
//
//            textoCartasCompativeis = jog.exibeCartasCompativeis(cartaTopoMesa);
//                        
//            if(textoCartasCompativeis.equals("")) {
//                System.out.println("Voce nao tem cartas compativeis... Compre uma carta!");
//                jog.compraCarta(deck, 1);
//                comprada = deck.compraCartaTopo();
//                if(comprada.isCompatible(cartaTopoMesa)) {
//                    mesa.adicionaCarta(comprada);
//                }
//                else {
//                    System.out.println("Jogada passada!");
//                }
//            }
//            
//            else {
//                boolean loop = false;
//                
//                do {
//                    System.out.print("Cartas Compativeis: " + textoCartasCompativeis);
//                    System.out.println();
//                    System.out.println("Baixe uma carta.");
//                    System.out.println("Valor: ");
//                    valorCartaBaixada = scan.nextInt();
//                    System.out.println("Cor: ");
//                    corCartaBaixada = scan.next();
//                    
//                    cartaBaixadaJog = jog.capturaCarta(valorCartaBaixada, corCartaBaixada);
//                    
//                    if(cartaBaixadaJog != null) {
//                        loop = false;
//                    }
//                    else {
//                        System.out.println("Carta Invalida!");
//                    }
//                    
//                } while(loop);
//                
//                mesa.montante.add(cartaBaixadaJog);
//                
//                // turno do CPU
//            }
//        }
//    }
//}